#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#define FILE_NAME "file.txt"

int main()
{
    // umask(0);//将子进程的umask置0，后续创建的文件权限即为666
    // 当文件不存在时，open的可写并不会创建file.txt，需要按位或上O_CREAT，加上创建文件功能，最后一个参数是文件创建时的权限
    // int fd = open(FILE_NAME, O_CREAT | O_WRONLY | O_TRUNC, 0666);// 最终权限是0666 & umask
    // int fd = open(FILE_NAME, O_CREAT | O_WRONLY | O_APPEND, 0666); // 最终权限是0666 & umask
    int fd = open(FILE_NAME, O_RDONLY); 

    if (fd < 0)
    {
        perror("open failed");
        return 1;
    }
    // int cnt = 5;
    // const char* msg = "Hello World\n";
    // char msg[64];
    // while (cnt--)
    // {
    //     sprintf(msg, "%d %s\n", cnt, "Hello World");
    //     write(fd, msg, strlen(msg));
    // }
    char* buffer[64];
    ssize_t num;
    while (num = read(fd, buffer, sizeof(buffer) - 1))
    {
        buffer[num] = '\0';
        printf("%s", buffer);
    }
    close(fd);
    return 0;
}